package com.egao.common.module.cooperative.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.cooperative.entity.CooperativeProjectActivity;
import com.egao.common.module.cooperative.entity.vo.CooperativeProjectActivityListVO;
import com.egao.common.module.cooperative.entity.vo.CooperativeProjectStudentBtn;
import com.egao.common.module.system.entity.User;

import java.util.List;

/**
 * 产教融合项目活动服务接口
 * @author root
 */
public interface CooperativeProjectActivityService extends IService<CooperativeProjectActivity> {

    /**
     * 项目活动分页列表
     * @param page
     * @return
     */
    List<CooperativeProjectActivityListVO> listPage(PageParam<CooperativeProjectActivity> page);

    /**
     * 活动分页列表
     * @param page
     * @return
     */
    List<CooperativeProjectActivityListVO> listPageActivity(PageParam<CooperativeProjectActivity> page);

    /**
     * 项目风采列表
     * @param page
     * @return
     */
    List<CooperativeProjectActivityListVO> listPageShine(PageParam<CooperativeProjectActivity> page);

    /**
     * 工作动态列表
     * @param page
     * @return
     */
    List<CooperativeProjectActivityListVO> listPageDynamic(PageParam<CooperativeProjectActivity> page);

    /**
     * 公开活动
     * (前端对外展示)
     * @param page
     * @return
     */
    List<CooperativeProjectActivityListVO> listPagePublicity(PageParam<CooperativeProjectActivity> page);

    /**
     * 添加活动
     * @param cooperativeProjectActivity
     * @param role
     * @return
     */
    JsonResult addCooperativeProjectActivity(CooperativeProjectActivity cooperativeProjectActivity, String role);

    /**
     * 修改活动
     * @param cooperativeProjectActivity
     * @param role
     * @return
     */
    JsonResult updateCooperativeProjectActivity(CooperativeProjectActivity cooperativeProjectActivity, String role);

    /**
     * 删除活动
     * @param id
     * @param role
     * @return
     */
    JsonResult deleteCooperativeProjectActivity(Integer id, String role);

    /**
     * 查看活动
     * @param id
     * @param role
     * @return
     */
    JsonResult detail(Integer id, String role);

    /**
     * 审核活动
     * @param cooperativeProjectActivity
     * @return
     */
    JsonResult audit(CooperativeProjectActivity cooperativeProjectActivity);

    /**
     * 初始化学生报名活动按钮
     * @param cooperativeProjectActivity 活动
     * @param user 学生用户
     * @return
     */
    CooperativeProjectStudentBtn initBtn(CooperativeProjectActivity cooperativeProjectActivity, User user);


}
